package org.zxp.thread.hang;

import org.junit.Test;

/**
 * @program: zxp-thread-test
 * @description: suspend 和 resume已经不推荐使用，原因是：1、不能释放锁 2、容易死锁（本例演示）
 * @author: X-Pacific zhang
 * @create: 2019-05-07 16:03
 **/
public class SuspendTest {
    @Test
    public void testSuspend() throws InterruptedException {
        Object o = new Object();
        Thread thread = new Thread(() ->
        {
            synchronized (o){
                System.out.println("占用资源");
                Thread.currentThread().suspend();
            }
            System.out.println("释放资源");
        });
        thread.start();
        Thread.sleep(100);//如果执行了sleep那么会等上面Thread.currentThread().suspend();执行了，下面才释放，才不会造成死锁
        thread.resume();//当执行了resume时，可能上面Thread.currentThread().suspend();还没有执行，所以非常容易造成死锁

        Thread.sleep(1000000);
    }
}
